import { IsString, IsOptional, IsBoolean, IsInt, Min, Max, IsEnum, MaxLength } from 'class-validator';
import { FileType, ImportFrequency } from '../entities/match-import-config.entity';

/**
 * 更新比赛文件导入配置DTO
 */
export class UpdateMatchImportConfigDto {
  @IsOptional()
  @IsString()
  name?: string;

  @IsOptional()
  @IsString()
  importPath?: string;

  @IsOptional()
  @IsBoolean()
  isEnabled?: boolean;

  @IsOptional()
  @IsString()
  description?: string;

  @IsOptional()
  @IsInt()
  @Min(0)
  @Max(23)
  importHour?: number;

  @IsOptional()
  @IsInt()
  @Min(0)
  @Max(59)
  importMinute?: number;

  @IsOptional()
  @IsEnum(FileType)
  fileType?: FileType;

  @IsOptional()
  @IsEnum(ImportFrequency)
  frequency?: ImportFrequency;

  @IsOptional()
  @IsInt()
  @Min(1)
  @Max(1440) // 最大1440分钟（24小时）
  intervalMinutes?: number;

  @IsOptional()
  @IsInt()
  @Min(0)
  @Max(20)
  maxRetries?: number;

  @IsOptional()
  @IsInt()
  @Min(1)
  @Max(60)
  retryIntervalMinutes?: number;

  @IsOptional()
  @IsString()
  @MaxLength(2000, { message: '失败原因不能超过2000个字符' })
  failureReason?: string;
}